package main

import (
	"flag"
	"fmt"
)

// 也可以使用flag.Int()获取参数
func main() {
	intVal := flag.Int("intVal", 0, "int类型参数")
	boolVal := flag.Bool("boolVal", false, "bool类型参数")
	//返回的是string类型的地址
	var stringVal = flag.String("stringVal", "", "string类型参数")
	//解析
	flag.Parse()
	fmt.Println("-intVal:", *intVal)
	fmt.Println("-boolVal:", *boolVal)
	fmt.Println("-stringVal:", *stringVal)
	fmt.Println("-stringVal内存地址:", stringVal)
	//执行命令为   go run flag.go -intVal 15 -boolVal  -stringVal dev
	//其中bool比较特殊，不能显示指定-boolVal的值，指定后，后面的string参数会解析失败。
	//可以理解为，想让boolVal为false，就不指定。如果想让其为true，就指定-boolVal且不用写true。
	//完美的写法是: go run flag.go -intVal=15 -boolVal=true -stringVal=dev
}
